const sort = (array) => {
  //记录最后一次交换的位置
  let lastExchangeIndex = 0;
  //无序数列的边界，每次比较只需要比到这里为止
  let sortBorder = array.length - 1;
  for (let i = 0; i < array.length - 1; i++) {
  //有序标记，每一轮的初始值都是true
    let isSorted = true;
    for (let j = 0; j < sortBorder; j++) {
      let tmp = 0;
      if (array[j] > array[j + 1]) {
        tmp = array[j];
        array[j] = array[j + 1];
        array[j + 1] = tmp;
        // 因为有元素进行交换，所以不是有序的，标记变为false
        isSorted = false;
        // 更新为最后一次交换元素的位置
        lastExchangeIndex = j;
      }
    }
    sortBorder = lastExchangeIndex;
    if(isSorted){
      break;
    }
  }
}
const run = ()=>{
  const arr = [3,4,2,1,5,6,7,8];
  sort(arr);
  console.log(arr)
}
run()